package demo1;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * 使用Spring来管理项目中的类
 * IOC(反转控制)
 * 将我们编写的程序自行控制要实例化的类,做初始化等动作的事情转交给由Spring来完成
 * 将初始化的控制权反过来交给Spring容器管理的思想为IOC
 */
public class Demo {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {

        //传统写法.优点:简单明了,缺点:写死了
        User user = new User();
        user.sayHello();

        //反射机制
        Class cls = Class.forName("demo1.User");
        User user1 = (User)cls.newInstance();
        user1.sayHello();

        //现在:Spring容器
        //优点:不需要编写大量的反射代码来维护对象的创建等工作
        //缺点:没有什么缺点
        //创建Spring提供的A时需要指定管理的句
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("demo1");
        User user2 = context.getBean(User.class);
        user2.sayHello();

    }
}
